import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;

import javax.swing.JDialog;
import javax.swing.JOptionPane;


public class JanelaForca extends JDialog{

	private ParteDesenho forca;
	private int numeroPartes=0;
	
	private ArrayList<ParteDesenho> desenho=new ArrayList<ParteDesenho>();
	
	
	public JanelaForca() {
		forca= new ParteDesenho(new Rectangle(10,40,30,170), Color.WHITE);
		forca.addParte(new Rectangle(10,30,190,20), Color.BLACK);
		forca.addParte(new Rectangle(178,40,5,30), Color.BLACK);
		
		ParteDesenho cabeca=new ParteDesenho(new Ellipse2D.Double(160, 60, 40, 40), Color.BLACK);
		cabeca.addParte(new Ellipse2D.Double(170, 72, 8, 15), Color.white);
		cabeca.addParte(new Ellipse2D.Double(183, 72, 8, 15), Color.white);		
		
		ParteDesenho tronco=new ParteDesenho(new Rectangle(175,95,10,50), Color.BLACK);
		ParteDesenho bracoEsq=new ParteDesenho(new Rectangle(185,100,25,10), Color.BLACK);
		ParteDesenho bracoDir=new ParteDesenho(new Rectangle(150,100,25,10), Color.BLACK);
		ParteDesenho pernaEsq=new ParteDesenho(new Rectangle(165,145,10,30), Color.BLACK);
		ParteDesenho pernaDir=new ParteDesenho(new Rectangle(185,145,10,30), Color.BLACK);
	
		bracoEsq.addParte(new Ellipse2D.Double(208, 98, 15, 15), Color.WHITE);
		bracoDir.addParte(new Ellipse2D.Double(135, 98, 15, 15), Color.WHITE);
		pernaEsq.addParte(new Ellipse2D.Double(155, 170, 20, 10), Color.WHITE);
		pernaDir.addParte(new Ellipse2D.Double(185, 170, 20, 10), Color.WHITE);

		desenho.add(cabeca);
		desenho.add(tronco);
		desenho.add(bracoEsq);
		desenho.add(bracoDir);
		desenho.add(pernaEsq);
		desenho.add(pernaDir);
		
		setSize(300, 300);
		setLocation(100,100);
		setVisible(true);
		setModal(true);
	}
	
	private void desenhaParteDesenho(Graphics2D g2d, ParteDesenho parteDesenho) {
		for (Shape parte : parteDesenho.getPartes().keySet()) {
    		g2d.setColor(parteDesenho.getPartes().get(parte));
        	g2d.fill(parte);
        	g2d.setColor(Color.BLACK);
        	g2d.draw(parte);
    		
		}
	}
	
	public void mostra(int numeroPartes) {
		this.numeroPartes=numeroPartes;
		repaint();
	}
	
	@Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) this.getGraphics();
        
        desenhaParteDesenho(g2d, forca);
        
        for (int i=0; i<numeroPartes; i++) {
        	ParteDesenho parteDesenho=desenho.get(i);
        	 desenhaParteDesenho(g2d, parteDesenho);
		} 	

    }
	
	public static void main(String[] args) {
		JanelaForca janela=new JanelaForca();
		janela.mostra(6);
		JOptionPane.showMessageDialog(null, "Forca");
		janela.dispose();
	}
	

	
	
}
